package com.xinqi.modules.exam.student.dto.rsp;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.xinqi.common.core.jackson.ScoreJacksonSerialize;
import com.xinqi.modules.exam.student.enums.PaperAnswerStatusEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 课程测评学生列表-响应对象
 *
 * @author: linkai
 * @date: 2023/07/02
 */
@Data
@Schema(description = "课程测评学生列表-响应对象")
public class CourseExamPaperStudentListDTO implements Serializable {
    /**
     * 主键
     */
    @Schema(description = "主键", example = "")
    private Long id;
    /**
     * 班级ID
     */
    @Schema(description = "班级ID", example = "")
    private Long classId;
    /**
     * 测评ID
     */
    @Schema(description = "测评ID", example = "")
    private Long examPaperId;
    /**
     * 学生ID
     */
    @Schema(description = "学生ID", example = "")
    private Long studentId;
    /**
     * 学生试卷状态，0-未交卷；1-未批阅；2-被打回；4-已批阅；
     */
    @Schema(description = "学生试卷状态，0-未交卷；1-未批阅；2-被打回；4-已批阅；", example = "")
    private PaperAnswerStatusEnum status;
    /**
     * 得分
     */
    @Schema(description = "得分", example = "")
    @JsonSerialize(using = ScoreJacksonSerialize.class)
    private BigDecimal score;
    /**
     * 题目总分
     */
    @Schema(description = "题目总分", example = "")
    private BigDecimal totalScore;
    /**
     * 主观题数量
     */
    @Schema(description = "主观题数量", example = "6")
    private Integer subjectiveQuestionNum;
    /**
     * 客观题数量
     */
    @Schema(description = "客观题数量", example = "6")
    private Integer objectiveQuestionNum;
    /**
     * 是否考试
     */
    @Schema(description = "是否考试", example = "")
    private Integer isExam;
    /**
     * 开始考试时间
     */
    @Schema(description = "开始考试时间", example = "")
    private LocalDateTime startTime;
    /**
     * 提交时间
     */
    @Schema(description = "提交时间", example = "")
    private LocalDateTime submitTime;
    /**
     * 是否限制答题时间
     */
    @TableField(value = "is_limit_answer_time")
    private Integer isLimitAnswerTime;
    /**
     * 考试时长（分钟）
     */
    @TableField(value = "exam_duration")
    private Long examDuration;
    /**
     * 剩余答题时间（分钟）
     */
    @Schema(description = "剩余答题时间（分钟）", example = "")
    private Long remainingAnswerTime;
    /**
     * 答题结束时间
     */
    @Schema(description = "答题结束时间", example = "")
    private LocalDateTime answerEndTime;
    /**
     * 是否已阅
     */
    @Schema(description = "是否已阅", example = "")
    private Integer isMarked;
    /**
     * 是否已阅
     */
    @Schema(description = "是否系统批阅", example = "")
    private Integer isSysMarked;
    /**
     * 切屏次数
     */
    @Schema(description = "切屏次数", example = "")
    private Integer screenSwitchNum;

    /**
     * 学生名称
     */
    @Schema(description = "学生名称", example = "")
    private String studentName;
    /**
     * 学生头像
     */
    @Schema(description = "学生头像", example = "")
    private String studentAvatar;
    /**
     * 学号
     */
    @Schema(description = "学号", example = "")
    private String studentNumber;
    /**
     * 新奇号
     */
    @Schema(description = "新奇号", example = "")
    private String xinqiNumber;
}
